package com.deyuanyun.pic.pbf.app.mapper;

import com.deyuanyun.pic.pbf.app.domain.*;
import com.deyuanyun.pic.pbf.domain.*;
import com.deyuanyun.pic.pipe.domain.PipeSegmentInfo;
import com.deyuanyun.pic.wf.domain.TaskInstance;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description
 * @author Jerry
 * @date 2016-06-15
 */
public interface PbfMapper {

  List<Map<String,Object>> testSelect();

  /**
   *
   * 维修维护登录
   * @param Account
   * @return
     */
  List<Map<String,Object>> login(@Param("Account") String Account);


  /**
   * 查询用户的真实姓名
   * @param userId
   * @return
   */
  Map<String,Object> selectRealName(String userId);


  /**
   * 通过公司id查找公司相关信息
   * @param companyId
   * @return
   */
  Map<String,Object> selectCompanyName(String companyId);

  /**
   * 写入登录日志
   * @param pbfLoginLog
   * @return
   */
   int insertLog(PbfLoginLog pbfLoginLog);

  /**
   * 根据用户id判断该用户情况
   * @param userId
   * @return
     */
  Map<String,Object>findUserId(@Param("UserID") String userId);

  /**
   * 根据缺陷点Id查询对应的维修方法Id
   * @param defId
   * @return
     */
  Map<String,Object> findRepairIdBydefId(@Param("defId") String defId);

  /**
   *获取维修维护项目列表
   * @return
   */
  Page<Map<String,Object>> getProjects();

  /**
   * 获取当前用户在移动端的新增缺陷点列表（非内检数据）
   * @param user
   * @return
   */
  Page<Map<String,Object>> findDefectListByUser(@Param("User") String user);

  /**
   * 获取当前项目的新增缺陷点列表
   * @param ID
   * @return
   */
  Page<Map<String,Object>> findDefectListByTask(@Param("ID") String ID);


  /**
   * 获取当前项目的新增缺陷点列表(指涂层维修项目）
   * @param ID
   * @return
   */
  Page<Map<String,Object>> findCtrlDefectListByTask(@Param("ID") String ID);


    /**
     * 获取当前项目的新增缺陷点列表(主要用于获取缺陷点个数 取map.size()
     * @param ID
     * @return
     */
    List<Map<String,Object>> findDefectList(@Param("ID") String ID);

  /**
   * 根据管道Id和缺陷点的绝对距离查询参考点信息
   * @param pipeLineId
   * @param mileage
   * @return
     */
// List<RefPointInfoDTO> findRefPontInfoBymileage(@Param("pipeLineId")String pipeLineId,@Param("mileage")BigDecimal mileage);
    List<RefPointInfoDTO> findRefPontInfoBymileage(@Param("pipeLineId")String pipeLineId,@Param("mileage")BigDecimal mileage);

  /**
   * 获取基础配置(查询缺陷类型1级)
   * @return
   */
  List<Map<String,Object>> getFearture(@Param("major") String major);

  /**
   * 获取基础配置(查询缺陷类型2级)
   * @return
   */
  List<Map<String,Object>> getFeartureBypd(@Param("id") String id);


  /**
   * insert非内检测缺陷数据(App)
   * @param result
   * @return
   */
  int pipeBodyDefect(AddDefectResult result);

  /**
   * insert非内检缺陷与修复方法关系表
   * @param pipeDefectRepairMethod
   * @return
   */
  int insertDefectRepairMethod(PipeDefectRepairMethod pipeDefectRepairMethod);

  /**
   * insert内检数据（app在项目过程中添加的缺陷点为内检数据）
   * @param result
   * @return
     */
  int pipeDefect(DefectResult result);

  /**
   * 获取修复方法流程定义
   * @return
   */
  List<Map<String,Object>> getRepair();

    /**
     *通过维修流程id查找相应的节点相关信息
     * @param repairId
     * @return
     */
  List<Map<String,Object>> getRepairNode(@Param("repairId") String repairId);

    /**
     * 通过维修任务Id查找对应缺陷点的维修状态(维修项目）
     * @param taskId
     * @return
     */
    List<Map<String,Object>> getRepairStateByTaskId(@Param("taskId") String taskId);

  /**
   *通过维修任务Id查找对应缺陷点的维修状态(涂层项目）
   * @param taskId
   * @return
     */

  List<Map<String,Object>> getCrtlRepairStateByTaskId(@Param("taskId") String taskId);

  /**
   * 在管道开挖时insert同沟
   * @return
   */
  int insertTrench(TrenchMark trench);

    /**
     * insert管道和同沟记录表
     * @param Id
     * @param defectId
     * @param trenchId
     * @return
     */
  int insertTrenchR(@Param("Id") String Id,@Param("defectId") String defectId,@Param("trenchId") String trenchId);

  /**
   * 通过缺陷点查询同沟关系表
   * @param defectId
   * @return
     */
  Map<String,Object> selectTrenchRByDefId(@Param("defectId") String defectId);


  /**
   * 通过trenchId查找对应缺陷点的管道id
   * @param trenchId
   * @return
     */
  List<Map<String,Object>> selectPipeIdBytrenchId(@Param("trenchId") String trenchId);

  /**
   * 通过元素id和管道id查询管段信息表
   * @param pipeId
   * @param elementId
   * @return
     */
  List<PipeSegmentInfo> selectPipeSegmentInfo(@Param("pipeId") String pipeId,@Param("elementId") String elementId);

  /**
   * 根据同沟Id查找对应缺陷点
   * @param processId
   * @return
     */
  List<Map<String,Object>> findDefIdByprocessId(@Param("processId") String processId);

  /**
   * insert管道开挖记录
   * @param PostDig
   * @return
   */
  int insertTrenchExcavtion(PostDig PostDig);

  /**
   * insert腐蚀环境调查
   * @param postCorrosionEnvSurvey
   * @return
   */
  int insertCorrosionEnvironment(PostCorrosionEnvSurvey postCorrosionEnvSurvey);

  /**
   * insert防腐层调查
   * @param PostCoatingSurvey
   * @return
   */
  int insertCoatSurvey(PostCoatingSurvey PostCoatingSurvey);
  /**
   * insert表面处理
   * @param postSurfaceDeal
   * @return
   */
  int insertSurfaceTreatment(PostSurfaceDeal postSurfaceDeal);

  /**
   * insert阴保调查
   * @param cpSurvey
   * @return
   */
  int insertCPSurvey(PostCathodicProtectionSurvey cpSurvey);

  /**
   * insert漏损点测量表
   * @param repairLeakageDto
   * @return
   */
  int insertLeakagePoint(RepairLeakageDto  repairLeakageDto);

  /**
   * insert缺陷测量
   * @param measureForm
   * @return
     */
  int insertMeasure(PostMeasureForm measureForm);

  /**
   * insert复合测量补强
   * @param materialRepair
   * @return
     */
  int insertCompMaterial(PostCompMaterialRepair materialRepair);

  /**
   * insert钢质环氧套筒补强修复
   * @param steelEpoxySleeve
   * @return
     */
  int insertSteelEpoxy(PostSteelEpoxySleeve steelEpoxySleeve);

  /**
   * insertAB型套筒补强修复表单
   * @param abSleeveForm
   * @return
   */
  int insertABSleeve(PostABSleeveForm abSleeveForm);

    /**
     * insert防腐层修复表单
     * @param coatingRepairDto
     * @return
     */

    int insertCoatRepair(CoatingRepairDto coatingRepairDto);

  /**
   * 换管表
   * @param changePipe
   * @return
   */
  int insertChangePipe(PostChangePipe changePipe);

  /**
   * insert焊缝信息表
   * @param postWeld
   * @return
     */
  int insertPostWeld(PostWeld postWeld);

  /**
   * insert换管焊缝表
   * @param postPipeWelding
   * @return
   */
  int insertPostWelding(PostPipeWelding postPipeWelding);



  /**
   * insert管沟回填
   * @param trenchBackPill
   * @return
   */
  int insertTrenchBack(TrenchBackPill trenchBackPill);

    /**
     * update TaskInstance的状态（只完成还是非完成）
     * @param taskInstance
     * @return
     */
    int updateTaskInstanceStatus(TaskInstance taskInstance);


  /**
   * update taskInstance的节点跳过（0没跳过，1跳过)
   * @param taskInstance
   * @return
     */
    int updateTaskInstanceJump(TaskInstance taskInstance);

  /**
   * 当缺陷测量新增缺陷点时对于缺陷测量之前的缺陷点把它跳过（0没跳过，1跳过）
   * @param taskInstance
   * @return
     */
  int updateTaskInstanceWhenMeasure(TaskInstance taskInstance);


    /**
     * 通过同沟Id查找相应的缺陷点数组
     * @param trenchId
     * @return
     */
    List<Map<String,Object>> selectDefectIdBytrenchId(@Param("trenchId") String trenchId);

    /**
     * 通过节点id查找对应的表名
     * @param id
     * @return
     */
    String findTabNameByNodeId(@Param("id") String id);

    /**
     * 通过内检缺陷Id查找对应图片
     * @param id
     * @return
     */
    List<Map<String,Object>> findDefectImgBydefectId(@Param("id") String id);

    /**
     * 通过非内检缺陷Id查找对应图片
     * @param id
     * @return
     */
    List<Map<String,Object>> findPipeDefectImgBydefectId(@Param("id") String id);

    /**
     * 通过缺陷点id查找对应的修复方法
     * @param id
     * @return
     */
    String findDefectRepairWayById(@Param("id") String id);

  /**
   * insert其他修复表
   * @param otherDto
   * @return
   */
  int insertRepairOther(RepairOtherDto otherDto);

  /**
   * insert管沟回填表
   * @param trenchBackPillDto
   * @return
     */
  int insertTrenchBackPill(TrenchBackPillDto trenchBackPillDto);





}
